import logging
from redis import StrictRedis


class Config(object):
    # 开启调试模式
    DEBUG = True
    # 配置秘钥：项目中的CSRF和session需要用到，还有一些其他的签名算法也要用到
    SECRET_KEY = '67NvFnJUnGmmB6iL7TZBkyvsbalOKWgY1KohFMkWae6Q7HIIVkWH4I/B/biHcoLX'
    # 配置MySQL数据库:实际开发写数据库的真实ip
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/bigbig_object'
    # 不追踪数据库的更改，因为会有明显的开销
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 配置Redis数据库:redis模块不是flask的扩展，是python的一个包而已
    # 所以这里写的格式和SQLAlchemy的配置一样，但是，app不会自动的读取，就需要自己读
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379
    # 配置flask_session,将session数据写入到服务器的redis数据库
    # 指定session数据存储在redis
    SESSION_TYPE = 'redis'
    # 告诉session服务器redis的位置
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    # 是否将session签名后再存储
    SESSION_USE_SIGNER = True
    # 当SESSION_PERMANENT为True时，设置session的有效期才可以成立，正好默认就是True
    PERMANENT_SESSION_LIFETIME = 60*60*24

# 开发环境下的配置信息
class Development(Config):
    LEVEL_LOG = logging.DEBUG

# 上线之后的配置信息
class Production(Config):
    DEBUG = False
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/bigbig_object_pro'
    LEVEL_LOG = logging.ERROR
# 测试阶段的配置信息
class UnittestConfig(Config):
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/bigbig_object_test'
    TESTING = True
    LEVEL_LOG = logging.DEBUG


configs = {
    'dev': Development,
    'pro': Production,
    'test': UnittestConfig
}
